package com.baomidou.mybatisplus.toolkit;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @Title: GeneratorMapper
 * @Package cn.fulingroup.tfxing.zl.util
 * @Description: (用一句话描述该文件做什么)
 * @author Diego jxhjyh123@foxmailcom
 * @date 2017/12/27 16:07
 * @version V1.0
 */
public class GeneratorMapper {

    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("E://tq//");
        gc.setFileOverride(true);
        gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false
        gc.setEnableCache(false);// XML 二级缓存
        gc.setBaseResultMap(true);// XML ResultMap
        gc.setBaseColumnList(false);// XML columList
        // .setKotlin(true) 是否生成 kotlin 代码
        gc.setAuthor("Diego jxhjyh123@foxmailcom");
        gc.setMapperName("%sMapper");
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setTypeConvert(new MySqlTypeConvert(){
            // 自定义数据库表字段类型转换【可选】
            @Override
            public DbColumnType processTypeConvert(String fieldType) {
                System.out.println("转换类型：" + fieldType);
                // 注意！！processTypeConvert 存在默认类型转换，如果不是你要的效果请自定义返回、非如下直接返回。
                return super.processTypeConvert(fieldType);
            }
        });
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("mmcx_w");
        dsc.setPassword("YmNiZWQ3MjJlNTkz");
        dsc.setUrl("jdbc:mysql://192.168.30.195:3306/tfxing_tq_dev?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull");
        mpg.setDataSource(dsc);

        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
        strategy.setTablePrefix(new String[] { "S_", "L_" });// 此处可以修改为您的表前缀
//        strategy.setInclude("S_BUSINESS_LOG");
        mpg.setStrategy(strategy);
        // 包配置
        PackageConfig pc = new PackageConfig();
//        pc.setParent("cn.fulingroup.tfxing.tq.db.model");
        pc.setEntity("cn.fulingroup.tfxing.tq.db.model");
        pc.setMapper("cn.fulingroup.tfxing.tq.server.mapper");
        mpg.setPackageInfo(pc);

        // 执行生成
        mpg.execute();
    }
}
